package com.health.db;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import com.health.tools.GlobalConts;

import android.content.Context;
import android.content.res.AssetManager;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;
import android.util.Log;
import net.tsz.afinal.FinalDb;

/**
 * 建数据库
 * 
 * @author 田相伟 public void copyDB {
 *
 */
public class SQLdm {
	// 数据库存储路径
	String filePath = Environment.getExternalStorageDirectory() + GlobalConts.TYPE_DBFILENAME+"/" + "EhrApp.db";
	// 数据库存放的文件夹
	String pathStr = Environment.getExternalStorageDirectory() + GlobalConts.TYPE_DBFILENAME;

	SQLiteDatabase database;

	public SQLiteDatabase openDatabase(Context context) {

		System.out.println("filePath:" + filePath);
		File jhPath = new File(filePath);
		// 查看数据库文件是否存在
		if (jhPath.exists()) {
			Log.i("KioskDB", "数据库已存在");
			// 存在则直接返回打开的数据库
			try {
				return SQLiteDatabase.openOrCreateDatabase(jhPath, null);
			} catch (Exception e) {
				e.printStackTrace();
				copyDB(context, jhPath);
				// 如果没有这个数据库 我们已经把他写到SD卡上了，然后在执行一次这个方法 就可以返回数据库了
				return openDatabase(context);
			}
		} else {
			copyDB(context, jhPath);
			// 如果没有这个数据库 我们已经把他写到SD卡上了，然后在执行一次这个方法 就可以返回数据库了
			return openDatabase(context);
		}

	}

	public FinalDb getFinalDb(Context context) {
		File jhPath = new File(filePath);
		if (!jhPath.exists()) {
			Log.i("KioskDB", "数据库不存在");
			// 存在则直接返回打开的数据库
			copyDB(context, jhPath);
		}

		FinalDb db = FinalDb.create(context, pathStr, "EhrApp.db");
		return db;
	}

	public void copyDB(Context context, File jhPath) {
		File path = new File(pathStr);
		Log.i("KioskDB", "pathStr=" + path);
		if(path.exists()){
			
		}else{
			if (path.mkdirs()) {
				Log.i("KioskDB", "创建成功");
			} else {
				Log.i("KioskDB", "创建失败");
			}
		}
		

		try {
			// 得到资源
			AssetManager am = context.getAssets();
			// 得到数据库的输入流
			InputStream is = am.open("EhrApp.db");
			Log.i("KioskDB", is + "");
			// 用输出流写到SDcard上面
			FileOutputStream fos = new FileOutputStream(jhPath);
			// 创建byte数组 用于1KB写一次
			byte[] buffer = new byte[1024];
			int count = 0;
			while ((count = is.read(buffer)) > 0) {
				fos.write(buffer, 0, count);
			}
			// 最后关闭就可以了
			fos.flush();
			fos.close();
			is.close();
		} catch (IOException e) {
			e.printStackTrace();

		}
	}

	/**
	 * 获取ARCHIVE_ASSESSMENTGUIDE表的表名(健康体检_健康评价与指导)
	 * 
	 * @return
	 */
	public static String getARCHIVE_ASSESSMENTGUIDE_TableName() {
		return "ARCHIVE_ASSESSMENTGUIDE";
	}

	/**
	 * 获取ARCHIVE_ASSISTCHECK表的表名(健康体检_辅助检查表)
	 * 
	 * @return
	 */
	public static String getARCHIVE_ASSISTCHECK_TableName() {
		return "ARCHIVE_ASSISTCHECK";
	}

	/**
	 * 获取ARCHIVE_BASEINFO表的表名(个人基本信息)
	 * 
	 * @return
	 */
	public static String getARCHIVE_BASEINFO_TableName() {
		return "ARCHIVE_BASEINFO";
	}

	/**
	 * 获取ARCHIVE_CANTON表的表名(行政区域表)
	 * 
	 * @return
	 */
	public static String getARCHIVE_CANTON_TableName() {
		return "ARCHIVE_CANTON";
	}

	/**
	 * 获取ARCHIVE_CARD表的表名(居民健康档案信息卡)
	 * 
	 * @return
	 */
	public static String getARCHIVE_CARD_TableName() {
		return "ARCHIVE_CARD";
	}

	/**
	 * 获取ARCHIVE_CARDTYPE表的表名(卡片类型)
	 * 
	 * @return
	 */
	public static String getARCHIVE_CARDTYPE_TableName() {
		return "ARCHIVE_CARDTYPE";
	}

	/**
	 * 获取ARCHIVE_CONSULTATION_RECORD表的表名(会诊记录)
	 * 
	 * @return
	 */
	public static String getARCHIVE_CONSULTATION_RECORD_TableName() {
		return "ARCHIVE_CONSULTATION_RECORD";
	}

	/**
	 * 获取ARCHIVE_DISTRICT表的表名(区县)
	 * 
	 * @return
	 */
	public static String getARCHIVE_DISTRICT_TableName() {
		return "ARCHIVE_DISTRICT";
	}

	/**
	 * 获取ARCHIVE_CUSTOMERBASEINFO表的表名(健康体检_客户体检基本信息)
	 * 
	 * @return
	 */
	public static String getARCHIVE_CUSTOMERBASEINFO_TableName() {
		return "ARCHIVE_CUSTOMERBASEINFO";
	}

	/**
	 * 获取ARCHIVE_EDUCATION_ACTIVITIES表的表名(健康教育活动记录表)
	 * 
	 * @return
	 */
	public static String getARCHIVE_EDUCATION_ACTIVITIES_TableName() {
		return "ARCHIVE_EDUCATION_ACTIVITIES";
	}

	/**
	 * 获取ARCHIVE_ENVIRONMENT表的表名(个人基本信息_生活环境)
	 * 
	 * @return
	 */
	public static String getARCHIVE_ENVIRONMENT_TableName() {
		return "ARCHIVE_ENVIRONMENT";
	}

	/**
	 * 获取ARCHIVE_FAMILYBEDHISTORY表的表名(健康体检_家庭病床史表)
	 * 
	 * @return
	 */
	public static String getARCHIVE_FAMILYBEDHISTORY_TableName() {
		return "ARCHIVE_FAMILYBEDHISTORY";
	}

	/**
	 * 获取ARCHIVE_FAMILYHISTORYINFO表的表名(个人基本信息_家族史)
	 * 
	 * @return
	 */
	public static String getARCHIVE_FAMILYHISTORYINFO_TableName() {
		return "ARCHIVE_FAMILYHISTORYINFO";
	}

	/**
	 * 获取ARCHIVE_FAMILY_INFO表的表名(家庭档案信息表)
	 * 
	 * @return
	 */
	public static String getARCHIVE_FAMILY_INFO_TableName() {
		return "ARCHIVE_FAMILY_INFO";
	}

	/**
	 * 获取ARCHIVE_GENERALCONDITION表的表名(健康体检_一般状况)
	 * 
	 * @return
	 */
	public static String getARCHIVE_GENERALCONDITION_TableName() {
		return "ARCHIVE_GENERALCONDITION";
	}

	/**
	 * 获取ARCHIVE_HEALTHQUESTION表的表名(健康体检_现存主要健康问题表)
	 * 
	 * @return
	 */
	public static String getARCHIVE_HEALTHQUESTION_TableName() {
		return "ARCHIVE_HEALTHQUESTION";
	}

	/**
	 * 获取ARCHIVE_HOSPITALHISTORY表的表名(健康体检_住院史表)
	 * 
	 * @return
	 */
	public static String getARCHIVE_HOSPITALHISTORY_TableName() {
		return "ARCHIVE_HOSPITALHISTORY";
	}

	/**
	 * 获取ARCHIVE_ILLNESSHISTORYINFO表的表名(个人基本信息_既往史)
	 * 
	 * @return
	 */
	public static String getARCHIVE_ILLNESSHISTORYINFO_TableName() {
		return "ARCHIVE_ILLNESSHISTORYINFO";
	}

	/**
	 * 获取ARCHIVE_INOCULATIONHISTORY表的表名(健康体检_非免疫规划预防接种史表)
	 * 
	 * @return
	 */
	public static String getARCHIVE_INOCULATIONHISTORY_TableName() {
		return "ARCHIVE_INOCULATIONHISTORY";
	}

	/**
	 * 获取ARCHIVE_LIFESTYLE表的表名(健康体检_生活方式)
	 * 
	 * @return
	 */
	public static String getARCHIVE_LIFESTYLE_TableName() {
		return "ARCHIVE_LIFESTYLE";
	}

	/**
	 * 获取ARCHIVE_MEDI_PHYS_DIST表的表名(健康体检_中医体质辨识表)
	 * 
	 * @return
	 */
	public static String getARCHIVE_MEDI_PHYS_DIST_TableName() {
		return "ARCHIVE_MEDI_PHYS_DIST";
	}

	/**
	 * 获取ARCHIVE_MEDICATION表的表名(健康体检_中医体质辨识表)
	 * 
	 * @return
	 */
	public static String getARCHIVE_MEDICATION_TableName() {
		return "ARCHIVE_MEDICATION";
	}

	/**
	 * 获取ARCHIVE_PHYSICALEXAM表的表名
	 * 
	 * @return
	 */
	public static String getARCHIVE_PHYSICALEXAM_TableName() {
		return "ARCHIVE_PHYSICALEXAM";
	}

	/**
	 * 获取ARCHIVE_VISCERAFUNCTION表的表名
	 * 
	 * @return
	 */
	public static String getARCHIVE_VISCERAFUNCTION_TableName() {
		return "ARCHIVE_VISCERAFUNCTION";
	}

	/**
	 * 获取BARCODE_DAY表的表名
	 * 
	 * @return
	 */
	public static String getBARCODE_DAY_TableName() {
		return "BARCODE_DAY";
	}

	/**
	 * 获取BD_DD_AREA表的表名
	 * 
	 * @return
	 */
	public static String getBD_DD_AREA_TableName() {
		return "BD_DD_AREA";
	}

	/**
	 * 获取BD_ORGANIZE_EMPLOYEE表的表名
	 * 
	 * @return
	 */
	public static String getBD_ORGANIZE_EMPLOYEE_TableName() {
		return "BD_ORGANIZE_EMPLOYEE";
	}

	/**
	 * 获取BD_ORGANIZE_INSTITUTION表的表名
	 * 
	 * @return
	 */
	public static String getBD_ORGANIZE_INSTITUTION_TableName() {
		return "BD_ORGANIZE_INSTITUTION";
	}

	/**
	 * 获取CD_CHD_BASEINFO表的表名
	 * 
	 * @return
	 */
	public static String getCD_CHD_BASEINFO_TableName() {
		return "CD_CHD_BASEINFO";
	}

	/**
	 * 获取CD_CHD_FOLLOWUP表的表名
	 * 
	 * @return
	 */
	public static String getCD_CHD_FOLLOWUP_TableName() {
		return "CD_CHD_FOLLOWUP";
	}

	/**
	 * 获取CD_DIABETESFOLLOWUP表的表名
	 * 
	 * @return
	 */
	public static String getCD_DIABETESFOLLOWUP_TableName() {
		return "CD_DIABETESFOLLOWUP";
	}

	/**
	 * 获取CD_DIABETES_BASEINFO表的表名
	 * 
	 * @return
	 */
	public static String getCD_DIABETES_BASEINFO_TableName() {
		return "CD_DIABETES_BASEINFO";
	}

	/**
	 * 获取CD_DRUGCONDITION表的表名
	 * 
	 * @return
	 */
	public static String getCD_DRUGCONDITION_TableName() {
		return "CD_DRUGCONDITION";
	}

	/**
	 * 获取CD_HYPERTENSIONFOLLOWUP表的表名
	 * 
	 * @return
	 */
	public static String getCD_HYPERTENSIONFOLLOWUP_TableName() {
		return "CD_HYPERTENSIONFOLLOWUP";
	}

	/**
	 * 获取ARCHIVE_REFERRAL_RETURN表的表名
	 * 
	 * @return
	 */
	public static String getARCHIVE_REFERRAL_RETURN_TableName() {
		return "ARCHIVE_REFERRAL_RETURN";
	}

	/**
	 * 获取CD_HYPERTENSION_BASEINFO表的表名
	 * 
	 * @return
	 */
	public static String getCD_HYPERTENSION_BASEINFO_TableName() {
		return "CD_HYPERTENSION_BASEINFO";
	}

	/**
	 * 获取CD_MENTALDISEASE_BASEINFO表的表名
	 * 
	 * @return
	 */
	public static String getCD_MENTALDISEASE_BASEINFO_TableName() {
		return "CD_MENTALDISEASE_BASEINFO";
	}

	/**
	 * 获取CD_MENTALDISEASE_FOLLOWUP表的表名
	 * 
	 * @return
	 */
	public static String getCD_MENTALDISEASE_FOLLOWUP_TableName() {
		return "CD_MENTALDISEASE_FOLLOWUP";
	}

	/**
	 * 获取CD_STROKE_BASEINFO表的表名
	 * 
	 * @return
	 */
	public static String getCD_STROKE_BASEINFO_TableName() {
		return "CD_STROKE_BASEINFO";
	}

	/**
	 * 获取CD_STROKE_FOLLOWUP表的表名
	 * 
	 * @return
	 */
	public static String getCD_STROKE_FOLLOWUP_TableName() {
		return "CD_STROKE_FOLLOWUP";
	}

	/**
	 * 获取CHILD_BASEINFO表的表名
	 * 
	 * @return
	 */
	public static String getCHILD_BASEINFO_TableName() {
		return "CHILD_BASEINFO";
	}

	/**
	 * 获取CHILD_NEWBORN_FOLLOWUP表的表名
	 * 
	 * @return
	 */
	public static String getCHILD_NEWBORN_FOLLOWUP_TableName() {
		return "CHILD_NEWBORN_FOLLOWUP";
	}

	/**
	 * 获取CHILD_ONE2THREE_YEAR_OLD表的表名
	 * 
	 * @return
	 */
	public static String getCHILD_ONE2THREE_YEAR_OLD_TableName() {
		return "CHILD_ONE2THREE_YEAR_OLD";
	}

	/**
	 * 获取CHILD_TCMHM_ONE表的表名
	 * 
	 * @return
	 */
	public static String getCHILD_TCMHM_ONE_TableName() {
		return "CHILD_TCMHM_ONE";
	}

	/**
	 * 获取CHILD_TCMHM_ONE2THREE表的表名
	 * 
	 * @return
	 */
	public static String getCHILD_TCMHM_ONE2THREE_TableName() {
		return "CHILD_TCMHM_ONE2THREE ";
	}

	/**
	 * 获取CHILD_TCMHM_THREE2SIX表的表名
	 * 
	 * @return
	 */
	public static String getCHILD_TCMHM_THREE2SIX_TableName() {
		return "CHILD_TCMHM_THREE2SIX";
	}

	/**
	 * 获取CHILD_THREE2SIX_YEAR_OLD表的表名
	 * 
	 * @return
	 */
	public static String getCHILD_THREE2SIX_YEAR_OLD_TableName() {
		return "CHILD_THREE2SIX_YEAR_OLD";
	}

	/**
	 * 获取CHILD_WITHIN_ONE_YEAR_OLD表的表名
	 * 
	 * @return
	 */
	public static String getCHILD_WITHIN_ONE_YEAR_OLD_TableName() {
		return "CHILD_WITHIN_ONE_YEAR_OLD";
	}

	/**
	 * 获取COM_DB_SEQ_GENERATOR表的表名
	 * 
	 * @return
	 */
	public static String getCOM_DB_SEQ_GENERATOR_TableName() {
		return "COM_DB_SEQ_GENERATOR";
	}

	/**
	 * 获取DEVICEINFO表的表名
	 * 
	 * @return
	 */
	public static String getDEVICEINFO_TableName() {
		return "DEVICEINFO";
	}

	/**
	 * 获取GRAVIDA_BASEINFO表的表名
	 * 
	 * @return
	 */
	public static String getGRAVIDA_BASEINFO_TableName() {
		return "GRAVIDA_BASEINFO";
	}

	/**
	 * 获取GRAVIDA_FIRSTFOLLOWUP表的表名
	 * 
	 * @return
	 */
	public static String getGRAVIDA_FIRSTFOLLOWUP_TableName() {
		return "GRAVIDA_FIRSTFOLLOWUP";
	}

	/**
	 * 获取GRAVIDA_POSTPARTUM表的表名
	 * 
	 * @return
	 */
	public static String getGRAVIDA_POSTPARTUM_TableName() {
		return "GRAVIDA_POSTPARTUM";
	}

	/**
	 * 获取GRAVIDA_POSTPARTUM_42DAY表的表名
	 * 
	 * @return
	 */
	public static String getGRAVIDA_POSTPARTUM_42DAY_TableName() {
		return "GRAVIDA_POSTPARTUM_42DAY";
	}

	/**
	 * 获取GRAVIDA_PRE_ASSISTCHECK表的表名
	 * 
	 * @return
	 */
	public static String getGRAVIDA_PRE_ASSISTCHECK_TableName() {
		return "GRAVIDA_PRE_ASSISTCHECK";
	}

	/**
	 * 获取GRAVIDA_TWO2FIVE_FOLLOWUP表的表名
	 * 
	 * @return
	 */
	public static String getGRAVIDA_TWO2FIVE_FOLLOWUP_TableName() {
		return "GRAVIDA_TWO2FIVE_FOLLOWUP";
	}

	/**
	 * 获取HD_PERSONAL_HEALTH_PHOTO表的表名
	 * 
	 * @return
	 */
	public static String getHD_PERSONAL_HEALTH_PHOTO_TableName() {
		return "HD_PERSONAL_HEALTH_PHOTO";
	}

	/**
	 * 获取INOCULATION_CARD表的表名
	 * 
	 * @return
	 */
	public static String getINOCULATION_CARD_TableName() {
		return "INOCULATION_CARD";
	}

	/**
	 * 获取INOCULATION_OTHERPROGRAM表的表名
	 * 
	 * @return
	 */
	public static String getINOCULATION_OTHERPROGRAM_TableName() {
		return "INOCULATION_OTHERPROGRAM";
	}

	/**
	 * 获取INOCULATION_PROGRAM表的表名
	 * 
	 * @return
	 */
	public static String getINOCULATION_PROGRAM_TableName() {
		return "INOCULATION_PROGRAM";
	}

	/**
	 * 获取OLDER_SELFCAREABILITY表的表名
	 * 
	 * @return
	 */
	public static String getOLDER_SELFCAREABILITY_TableName() {
		return "OLDER_SELFCAREABILITY";
	}

	/**
	 * 获取OLD_MEDICINE_CN表的表名
	 * 
	 * @return
	 */
	public static String getOLD_MEDICINE_CN_TableName() {
		return "OLD_MEDICINE_CN";
	}

	/**
	 * 获取OLD_MEDICINE_RESULT表的表名
	 * 
	 * @return
	 */
	public static String getOLD_MEDICINE_RESULT_TableName() {
		return "OLD_MEDICINE_RESULT";
	}

	/**
	 * 获取RH_ELECTROCARDIO表的表名
	 * 
	 * @return
	 */
	public static String getRH_ELECTROCARDIO_TableName() {
		return "RH_ELECTROCARDIO";
	}

}